#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<memory>
using namespace std;

//int main()
//{
//	weak_ptr<int> wp;
//	shared_ptr<int> sp1,sp2;
//	cout << wp.expired() << endl;
//	sp1 = std::make_shared<int>(20);    // sp1
//	wp = sp1;                            // sp1, wp
//	cout << wp.expired() << endl;
//	sp2 = wp.lock();                     // sp1, wp, sp2
//	sp1.reset();                         //      wp, sp2
//	cout << wp.expired() << endl;
//	sp1 = wp.lock();                     // sp1, wp, sp2
//	cout << wp.expired() << endl;
//	std::cout << "*sp1: " << *sp1 << '\n';
//	std::cout << "*sp2: " << *sp2 << '\n';
//	cout << wp.expired() << endl;
//	return 0;
//}
int main()
{
	std::weak_ptr<int> wp;
	std::shared_ptr<int> sp;

	{
		std::shared_ptr<int> n1(new int);
		wp = n1;
		cout << wp.expired() << endl;
		sp = wp.lock();
	}
	cout << wp.expired() << endl;

	return 0;
}